{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 多项式回归\n",
    "## 多项式回归的解决思路\n",
    "\n",
    "![多项式回归的解决思路](images/多项式回归的解决思路.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.random.uniform(-3, 3, size=100)\n",
    "X = x.reshape(-1, 1) # 行不管，调整为1列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100, 1)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = 0.5 * x**2 + x + 2 + np.random.normal(0, 1, size=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWoAAAD4CAYAAADFAawfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAYZUlEQVR4nO3df4xlZX3H8c93ZwcYUBwbJqkMrLtNzCqWypaJtd3GVLRCxcAWWn9Em/6I2ZjUFqkSV20E2li2oWpN0zTdBNsaacW4dIOFFtusppUE66yzirjQEAk/BlvXytYfLDK7++0fMxdm755z7/nxnHue85z3KyFhZu7cec7snc99zvd8n+eYuwsAEK8NbQ8AADAaQQ0AkSOoASByBDUARI6gBoDIbWziSc855xzfvHlzE08NAEk6cODAd919LutrjQT15s2btbi42MRTA0CSzOyRvK9R+gCAyBHUABA5ghoAIkdQA0DkCGoAiBxBDQCRa6Q9DwDasm9pWTff/aCeOHJU587O6LpLt2rHtvm2h1ULQQ0gGfuWlvX+2+/T0ZXjkqTlI0f1/tvvk6ROhzWlDwDJuPnuB58N6YGjK8d1890PtjSiMAhqAMl44sjRUp/vCoIaQDLOnZ0p9fmuIKgBJOO6S7dqZnrqpM/NTE/puku3tjSiMLiYCCAZgwuGTXd9TLqzhKAGkIxJBGgbnSWUPgAkYRCgy0eOyvVcgO5bWg76c9roLCGoASRhUgHaRmcJQQ0gCZMK0DY6SwhqAEmYVIC20VlCUANIwqQCdMe2ed101YWan52RSZqfndFNV11I1wcAjDOp1rzBz5rk3iEENYBkTDpAJ4XSBwBEjqAGgMhR+gCADDHdgICgBoAhsd2AgNIHAAyJ7QYEzKgB9EbRckZsNyBgRg2gF8ps2hTbDQgIagC9UKacEdsNCCh9AOiFMuWMSa5yLIKgBtAL587OaDkjlPPKGTGtcqT0AaAXYitnlFFoRm1m10p6hySXdJ+k33b3p5scGACsV3cBSpPljKYXx5i7j36A2bykL0m6wN2PmtlnJN3l7n+b9z0LCwu+uLgYbJAA+m14AYq0OhtuenvRIkKNzcwOuPtC1teKlj42Spoxs42SzpT0ROGfDgA1xbYAZb1JjG1sULv7sqQ/k/SopG9L+j93/3ywEQDAGLEtQCkyhpBjGxvUZvZCSVdK2iLpXElnmdnbMx6308wWzWzx8OHDwQYIALEtQCkyhpBjK1L6eJ2kh939sLuvSLpd0i8MP8jd97j7grsvzM3NBRsgAMTcsTGJsRXp+nhU0qvM7ExJRyW9VhJXCgFMTGwLUNabxNjGdn1IkpndKOnNko5JWpL0Dnf/cd7j6foAgHJGdX0U6qN29+slXR90VACAQliZCACRY68PAEmJ6RZaoRDUAJIR2y20QqH0ASAZMa9grIOgBpCMmFcw1kFQA0hGzCsY6yCoASQj5hWMdXAxEUAyYl7BWAdBDSQuxXa1UYZvobVvaVnbd+/v9PET1EDCUmxXK/PGk8rxU6MGEpZau9ogeJePHJXrueDdt7Sc+fhUjp+gBhKWWrta2eBN5fgJaiBhqbWrlQ3eVI6foAYSllq7WtngTeX4CWogYTu2zeumqy7U/OyMTNL87EwUd+6uqmzwpnL8hW4cUBY3DgDQlFTbDWvfOAAAYjHcJ90HlD4AIHIENQBEjtIHgCSkWruWCGoAEakatqksFc9D6QNAFMouD18vlaXieZhRA4jCqLAdnhUPz7yXE1kqnoegBhBclRJG0eXhWWUOk5S1IqRrS8XzUPoAEFTVEkbR5eFZM2+XZEPf18Wl4nkIagBBVa0XX3fpVk1PnRy301N2Stjmzbxd6vxS8TyUPgAEVWtr0eH6RUY9I68mPT87o3t2XVJghN3DjBpAUGV2uBvcJmvLrjv1ns98TSsnTk7mlRN+ykw8lR3xyiCoAQRVNEiHa9nHczaIG56Jp7IjXhmUPgAEVfRO4Fm17CxZM/G+bcxEUAMIrkiQFqlZp17SKKpQ6cPMZs3ss2b2gJkdMrOfb3pgANKWV8ueMutNSaOoojPqj0v6F3f/NTM7TdKZDY4JQMIGi2GyFqrMTE8RzhnGBrWZnS3p1ZJ+S5Lc/RlJzzQ7LKCfUt4BTjp1VeFgocqgBzq14w2lyIz6pyQdlvQ3ZvYKSQckXePuP1r/IDPbKWmnJG3atCn0OIHkpb4DnJS/qjDlHugQitSoN0r6WUl/5e7bJP1I0q7hB7n7HndfcPeFubm5wMME0pf6DnBSzcUwPVYkqB+X9Li7f3nt489qNbgBBNSHECuzGAbPGRvU7v7fkh4zs0GPzGslfbPRUQE91IcQ6+OqwhCKrkz8PUm3mtnXJV0k6U+aGxLQT30IsT6uKgyhUHueux+UtNDwWIBeK7qir+v6tqowBFYmAhEhxJCFTZkAIHIENQBEjqAGgMgR1AAQOYIaACJHUANA5AhqAIgcQQ0AkWPBC4DaUt9Hu20ENYBa+rCPdtvMc27RXsfCwoIvLi4Gf14AzagzI96+e7+WM7ZinTLTCXdm2AWZ2QF3z9xTiRk10HN1Z8R5+2UfX5sEMsOuj4uJQM/VvbNMkf2yU7tTzaQR1EDP1b2zTNY+2nWeD6ciqIGeq3tnmeGbAUyZ1Xo+nIqgBnouxJ1ldmyb1z27LtHDuy/XR970iuTvVDNpXEwEei70nWX6cqeaSaI9DwAiMKo9j9IHAESOoAaAyBHUABA5ghoAIkdQA0DkCGoAiFzn+qhH7fLFnrgAUtSpoB61y5ck9sRFpzHRQJ5OBfW4Xb7yvsaLHW0qEsBsvo9ROlWjHrXLV90dwIAmDAJ4+chRuZ4L4H1Lyyc9ru5Wo0hbNEG9b2lZ23fv15Zdd2r77v2nvJCl0bt81d0BDGhC0QBmooFRogjqorOOUbt8hdgBDAitaAAz0cAohYPazKbMbMnM/in0IIrOOob3vZ2fndFNV12oHdvmR34NaEvRAGaigVHKXEy8RtIhSWeHHkSZ075BKA/jijlidN2lW0+6SChlBzBbg2KUQkFtZudJulzShyX9QehBnDs7k3kX46KnfVwxR6zGBTATDBRRaD9qM/uspJskPV/Se939jRmP2SlppyRt2rTp4kceeaTwIIaDVlqdddx01YWSxs8y8m5XPz87o3t2XVJ4HMAkjXrdE9b9U2s/ajN7o6TvuPuBUY9z9z3uvuDuC3Nzc6UGmFdfllToImObV8yLdKsAWWjJQ1FFSh/bJV1hZm+QdIaks83sU+7+9pADyao9b9+9v9Ailrqlk6oouaCOtiYYlFu6Z+yM2t3f7+7nuftmSW+RtD90SOcp+kJu64o5MyLU0UZLXtFW2HHPwVnkZEXRR51n3At58IK59raDOn3jBr3wzOlCrXmhXmgsUkAdbUww6k4uQgQ9yisV1O7+xawLiU0Z9UIefsEcObqip1dO6GNvvkj37LpkZEiHeqGxSAF1tNH7X3dywVlkO6LflOmM6Q3PvjBmZ6Z1wxUv145t84Xr18NGvdDK/oEU7ZEF8urCeesCmlL3eg5nke2ItvQxmPk++dTKs5/78bETz/5/1RdMyBcaqyFRREzlgrrlFs4i2xHtjHrczLfqzCB0h8ikZ0TonpBncXXVXQHJWWQ7op1Rj5v5Vp0ZsKcCJi2mckHd1jzOItsR7Yx63My36syAPRUwKYNQzFv7O+lyQai+f84iJy/aoC5yilX1BcMLDU3LWh6+3vBreRKLUGIqwaCcaIOamS+6LCsUB+YzNmYadS/QUH8DMZVgUE60QS0x80V35YWfSadsFJY3073xc/fr6ZUTwbYoaGurBdQX7cVEoMvKtLHlhfqTT60EXVzChfTuIqiBBpQJxbIz2qqlCjo2uivq0gfQVWWuseRdOD994wYdObpyyuOrlCqGL1Z+7M0XEdAdQlADDSl6jSUv1CUFWVzCdrzdl3RQp7rvbqrH1WejQr3uvzVted2XbFCnOotI9bj6oMobbIjOJ9ryui/Zi4mpbseY6nF1Tdk9zdvcmImNlLov2Rl1qrOIVI8rZsMz4de8dE57DyyXOqtps/zARkrdF31QV63Hptrcn+pxxSqr1HTrvY+esn/HuNBt6g22yN8Hq3y7L+qgrrO0NoVZRNYfYQrH1SVZM+G8TZZGhW4Tb7Blrlewyrfboq5R550u3nDH/WPrfV1v7v/Dfffp2tsOnnKMkjp9XF1TZsY7KnSbWBXI9Yr+iHpGnfdHkrUIIOvUs6uziH1LyyNPr0fdExJh5c2ETSfPrMeFbhPlB65X9EfUQZ33R5InxhdolRr7qD2MYzzGmITuMc8rNV198by+8MDhibfarcf1iv6IOqjz/kjOmN5w0r0UB2J7gVbteR5X60S2JnrMY74Qx/WK/og6qJteWtu0qi1Zo063YzvGmDTVAhdrCS3mNxGEFXVQS8/9kQxOaa+97aDOnZ2pdOo5aVVriFkzJZP0tldtiu4YY9KFmm3o0kysbyIIK/qglrJPafceWI6+26FqDZGZUjWx12xZ/o+qOhHUXd1Upk4NMYaZUtc2f4q9ZtvV1zHa14mg7sIpbZYuz4y7OPuL/ffd1dcx2teJoA59SjvJmWIMM+Mqujr7i/n3HXtpBvGKemXiQMhVXW3uYtYlTc/+yu4+F/vPKYJ7FqKqTsyoQ57SdnWmWETIM4UmZ3+TKqu0Wb4Z9W8Ra2kG8TL3vDVwaw8wO1/SJyX9pKQTkva4+8dHfc/CwoIvLi4GG2RIW3bdmbnqzyQ9vPvySQ8nmOFQklZna1U7Y0I/33rbd+/PfBOYn53RPbsuqfXcRX7OlJlOuDcWlE3+7pAuMzvg7gtZXytS+jgm6T3u/jJJr5L0u2Z2QcgBTlKqm6iH3qBnx7Z5XX3xvKbMJK2G29UXh6n/hiyrjCpt5D3fcfdGy15tbJYUU4kH4Y0Nanf/trt/de3/fyDpkKTOTgtSrROGrinvW1rW3gPLOr52xnXcXXsPLAcJgFBvluOuNxR5viYCNMS/RZng5bpL+kpdTDSzzZK2SfpyE4OZhK5vf5on9JlCk7PCUG+W48aY9XOyhG6Pe8HMdKnPDysbvGx3mr7CFxPN7HmS9kp6t7t/P+PrOyXtlKRNmzYFG2ATYm7hqir0Yo8muz5CXVQbN8bhn7PB7NkzhPVCl73WqkWFPz+s7AVv+rPTVyiozWxaqyF9q7vfnvUYd98jaY+0ejEx2AhRSOiOgqZ7fkO8WRYZ4/qfk3eRL3TZ60jGzo6jPj+sbPDSn52+sUFtZibpFkmH3P2jzQ8pTZNYZBPyTCH25dhS+TFOqj2ubnCW/f4u/FuhniIz6u2SfkPSfWZ2cO1zH3D3u5obVlqa7uct8iZQ9o2iCz2/VcY4ibJX3eCM9Q0I7RnbR11FzH3Ubcjr533hmdM687SNtf648k7n128D+4KZaf3omWNaOe4nPSaFi6hNqXsG1Pb3o3tG9VF3Kqi7+uLNW2QzrEp45r0JDN/TL0voBSapYMEK2lB3wUsUutwrWrQ2WaWlKu8CU5E3hqb6eruOdjfEJsqgzgqFLv/xFO3nlcq3VNW5sl/0e7v8JlkF7W6ITXRBnRcKeXcj78IfT9Yim9mcxQ9lgzfrTaBIu26Zi1tdfpOsItVtBtBd0e2elxcKUxNarNCU4W6DUD29WVf8X/PSOe09sHzSc09vMD3vjI068tRK6fp+LDPMKtcoqnwP7W6ITXRBPWojnZnpqWT+eEK2VGW1nC28+CeiWPwS6gJwlRbHqm2RtLshNtF1fYzaAvO6S7fyx6Pmul/ynrdqF0TI7okqW6NOajtVIIRRXR/RzahHnXamuEdHWU0tninyvGXfHMbVtss8X5XySywlG6Cu6IKa087RmrpDzbjnrfImmReIgzeBrDeFwViG/+2rlF/YAwOpiC6opTR3t5PClCyamiXWed6848oLyimzzDeFGz93v55eOZEZ4FUu8HFREKmIrj0vVaF6kZtqHav6vKOOK2/f6azuHUl68qmVkbP6svuIp7r3OPonyhl1ikKVLF7z0jl96t5HMz9fR9bsc3qD6alnjmnLrjtzzwDyjuvGz92vpQ+9/tnHrJ9t33z3g7l98VnW7y9dNmRTPTtDv/Q+qCe1f0ioksUXHjhc6vNFDV8bGGzk9OTaHsp5Fy3zxv/kUyvat7ScGZSLj3xPt9776EnL3Gemp3T6xg06cvTUPZupKaPvel36mOTS6FAli6bvvHLPrkv08O7LddbpG0/abU/KXo04avxZKxcH92Jc/8wm6eqL53XDFS9P8n6WQF29DupJLo0OdZ/ASS1vLvqGMGr8Wc+R9Tt3rZ4RUFMGsvW69DHJPttQbYeT6mQo2tq2Y9u8brjj/sIliyL3OSSYgZP1Oqgn3WcbIoQm1Wde5g3hhiteXuix+5aWJ3aDWSAlvQ7qrvbZTmLWWeYNochjB9cDskK6C79zoE3R7fUxaV29a0zX5O27MWWmj7zpFfzO0Xud2utj0qiJTkZebfqEO79/YIzeBzXqK3JWwr4bQHW9bs9DfUV70UO1JwJ9RFCjlqK96PRIA9VR+qiBC5HletG5HgBUw4y6or7dmTsPN4IFmkdQV9S3O3PnofYMNI/SR0Xc5mkVd+QBmkdQV9RUu1kX696x1J67+LsDiqD0UVETp/zUvavjd4eUEdQVNdFuRt27On53SBmljxpCn/JT966O3x1SVmhGbWaXmdmDZvaQme1qelB91VSr276lZW3fvV9bdt2p7bv3J1kOoE0QKRsb1GY2JekvJf2KpAskvdXMLmh6YH1E3bs62gSRsiKlj1dKesjdvyVJZvZpSVdK+maTA+ujJlrdyt79vKudE7QJImVFgnpe0mPrPn5c0s8NP8jMdkraKUmbNm0KMrg+arPuPZh9D4I9787jsYqlTRAIrUiN2jI+d8rdBtx9j7svuPvC3Nxc/ZEhiDK1WzongDgVCerHJZ2/7uPzJD3RzHAQWpnaLZ0TQJyKBPVXJL3EzLaY2WmS3iLpjmaHhVDK9HvTOQHEaWyN2t2Pmdm7JN0taUrSJ9z9/sZHhmCK1m67erNfIHWFFry4+12S7mp4LGgZnRNAnFiZGKm22uTonADiQ1BHqOttcgDCYlOmCNEmB2A9gjpCee1wy0eOJrf0G8B4BHWERrXDpbhPB4DRCOoIZS1SGaAEAvQPFxMjNLhg+O7bDmZ+nZWCQL8wo47Ujm3zmmelIAAR1FFjj2UAEqWPqLFSEIBEUEePlYIAKH0AQOQIagCIHEENAJEjqAEgcgQ1AETO3E+5T239JzU7LOmRCt96jqTvBh5OWziWOKVyLKkch8SxDLzY3TPvDN5IUFdlZovuvtD2OELgWOKUyrGkchwSx1IEpQ8AiBxBDQCRiy2o97Q9gIA4ljilciypHIfEsYwVVY0aAHCq2GbUAIAhBDUARC66oDazPzazr5vZQTP7vJmd2/aYqjKzm83sgbXj+Uczm217TFWZ2a+b2f1mdsLMOtdKZWaXmdmDZvaQme1qezxVmdknzOw7ZvaNtsdSl5mdb2ZfMLNDa6+ta9oeU1VmdoaZ/aeZfW3tWG4M+vyx1ajN7Gx3//7a//++pAvc/Z0tD6sSM3u9pP3ufszM/lSS3P19LQ+rEjN7maQTkv5a0nvdfbHlIRVmZlOS/kvSL0t6XNJXJL3V3b/Z6sAqMLNXS/qhpE+6+0+3PZ46zOxFkl7k7l81s+dLOiBpR0f/XUzSWe7+QzOblvQlSde4+70hnj+6GfUgpNecJSmud5IS3P3z7n5s7cN7JZ3X5njqcPdD7t7Vu+q+UtJD7v4td39G0qclXdnymCpx93+X9L22xxGCu3/b3b+69v8/kHRIUic3X/dVP1z7cHrtv2DZFV1QS5KZfdjMHpP0Nkkfans8gfyOpH9uexA9NS/psXUfP66OBkKqzGyzpG2SvtzuSKozsykzOyjpO5L+1d2DHUsrQW1m/2Zm38j470pJcvcPuvv5km6V9K42xljUuGNZe8wHJR3T6vFEq8ixdJRlfK6zZ2qpMbPnSdor6d1DZ9Sd4u7H3f0irZ45v9LMgpWmWrkVl7u/ruBD/17SnZKub3A4tYw7FjP7TUlvlPRaj+2CwJAS/y5d87ik89d9fJ6kJ1oaC9ZZq+fulXSru9/e9nhCcPcjZvZFSZdJCnLRN7rSh5m9ZN2HV0h6oK2x1GVml0l6n6Qr3P2ptsfTY1+R9BIz22Jmp0l6i6Q7Wh5T761dgLtF0iF3/2jb46nDzOYGXV1mNiPpdQqYXTF2feyVtFWrHQaPSHqnuy+3O6pqzOwhSadL+t+1T93b4Q6WX5X0F5LmJB2RdNDdL213VMWZ2Rsk/bmkKUmfcPcPtzykSszsHyT9kla30/wfSde7+y2tDqoiM/tFSf8h6T6t/r1L0gfc/a72RlWNmf2MpL/T6utrg6TPuPsfBXv+2IIaAHCy6EofAICTEdQAEDmCGgAiR1ADQOQIagCIHEENAJEjqAEgcv8PjSBS3T5o8X0AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 线性拟合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "lin_reg = LinearRegression()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lin_reg.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_predict = lin_reg.predict(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.plot(x, y_predict, color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到线性拟合的效果很差"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 解决方案：添加一个特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "X2 = np.hstack([X, X**2]) # 堆叠一列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100, 2)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X2.shape # 两列即两个特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "lin_reg2 = LinearRegression()\n",
    "lin_reg2.fit(X2, y)\n",
    "y_predict2 = lin_reg2.predict(X2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)\n",
    "plt.plot(np.sort(x), y_predict2[np.argsort(x)], color='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1.06304636, 0.52330814])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lin_reg2.coef_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.880847189832273"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lin_reg2.intercept_"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
